<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no">
  <meta name="description" content="API docs for the addRetained method from the SceneBuilder class, for the Dart programming language.">
  <title>addRetained method - SceneBuilder class - dart:ui library - Dart API</title>
  <!-- required because all the links are pseudo-absolute -->
  <base href="../..">

  <link href="https://fonts.googleapis.com/css?family=Source+Code+Pro:500,400i,400,300|Source+Sans+Pro:400,300,700" rel="stylesheet">
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link rel="stylesheet" href="static-assets/github.css">
  <link rel="stylesheet" href="static-assets/styles.css">
  <link rel="icon" href="static-assets/favicon.png">
  <!-- header placeholder -->
</head>

<body>

<div id="overlay-under-drawer"></div>

<header id="title">
  <button id="sidenav-left-toggle" type="button">&nbsp;</button>
  <ol class="breadcrumbs gt-separated dark hidden-xs">
    <li><a href="index.html">flutter_form_builder</a></li>
    <li><a href="dart-ui/dart-ui-library.html">dart:ui</a></li>
    <li><a href="dart-ui/SceneBuilder-class.html">SceneBuilder</a></li>
    <li class="self-crumb">addRetained method</li>
  </ol>
  <div class="self-name">addRetained</div>
  <form class="search navbar-right" role="search">
    <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
  </form>
</header>

<main>

  <div id="dartdoc-sidebar-left" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left">
    <header id="header-search-sidebar" class="hidden-l">
      <form class="search-sidebar" role="search">
        <input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search...">
      </form>
    </header>
    
    <ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav">
      <li><a href="index.html">flutter_form_builder</a></li>
      <li><a href="dart-ui/dart-ui-library.html">dart:ui</a></li>
      <li><a href="dart-ui/SceneBuilder-class.html">SceneBuilder</a></li>
      <li class="self-crumb">addRetained method</li>
    </ol>
    
    <h5>SceneBuilder class</h5>
    <ol>
    
        <li class="section-title"><a href="dart-ui/SceneBuilder-class.html#constructors">Constructors</a></li>
        <li><a href="dart-ui/SceneBuilder/SceneBuilder.html">SceneBuilder</a></li>
    
        <li class="section-title inherited">
            <a href="dart-ui/SceneBuilder-class.html#instance-properties">Properties</a>
        </li>
        <li class="inherited"><a href="dart-core/Object/hashCode.html">hashCode</a></li>
        <li class="inherited"><a href="dart-core/Object/runtimeType.html">runtimeType</a></li>
    
        <li class="section-title"><a href="dart-ui/SceneBuilder-class.html#instance-methods">Methods</a></li>
        <li><a href="dart-ui/SceneBuilder/addChildScene.html">addChildScene</a></li>
        <li><a href="dart-ui/SceneBuilder/addPerformanceOverlay.html">addPerformanceOverlay</a></li>
        <li><a href="dart-ui/SceneBuilder/addPicture.html">addPicture</a></li>
        <li><a href="dart-ui/SceneBuilder/addPlatformView.html">addPlatformView</a></li>
        <li><a href="dart-ui/SceneBuilder/addRetained.html">addRetained</a></li>
        <li><a href="dart-ui/SceneBuilder/addTexture.html">addTexture</a></li>
        <li><a href="dart-ui/SceneBuilder/build.html">build</a></li>
        <li><a href="dart-ui/SceneBuilder/pop.html">pop</a></li>
        <li><a href="dart-ui/SceneBuilder/pushBackdropFilter.html">pushBackdropFilter</a></li>
        <li><a href="dart-ui/SceneBuilder/pushClipPath.html">pushClipPath</a></li>
        <li><a href="dart-ui/SceneBuilder/pushClipRect.html">pushClipRect</a></li>
        <li><a href="dart-ui/SceneBuilder/pushClipRRect.html">pushClipRRect</a></li>
        <li><a href="dart-ui/SceneBuilder/pushColorFilter.html">pushColorFilter</a></li>
        <li><a href="dart-ui/SceneBuilder/pushOffset.html">pushOffset</a></li>
        <li><a href="dart-ui/SceneBuilder/pushOpacity.html">pushOpacity</a></li>
        <li><a href="dart-ui/SceneBuilder/pushPhysicalShape.html">pushPhysicalShape</a></li>
        <li><a href="dart-ui/SceneBuilder/pushShaderMask.html">pushShaderMask</a></li>
        <li><a href="dart-ui/SceneBuilder/pushTransform.html">pushTransform</a></li>
        <li><a href="dart-ui/SceneBuilder/setCheckerboardOffscreenLayers.html">setCheckerboardOffscreenLayers</a></li>
        <li><a href="dart-ui/SceneBuilder/setCheckerboardRasterCacheImages.html">setCheckerboardRasterCacheImages</a></li>
        <li><a href="dart-ui/SceneBuilder/setRasterizerTracingThreshold.html">setRasterizerTracingThreshold</a></li>
        <li class="inherited"><a href="dart-core/Object/noSuchMethod.html">noSuchMethod</a></li>
        <li class="inherited"><a href="dart-core/Object/toString.html">toString</a></li>
    
        <li class="section-title inherited"><a href="dart-ui/SceneBuilder-class.html#operators">Operators</a></li>
        <li class="inherited"><a href="dart-core/Object/operator_equals.html">operator ==</a></li>
    
    
    
    
    
    </ol>
  </div><!--/.sidebar-offcanvas-->

  <div id="dartdoc-main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
      <div><h1><span class="kind-method">addRetained</span> method</h1></div>

    <section class="multi-line-signature">
      <span class="returntype">void</span>
            <span class="name ">addRetained</span>
(<wbr><span class="parameter" id="addRetained-param-retainedLayer"><span class="type-annotation"><a href="dart-ui/EngineLayer-class.html">EngineLayer</a></span> <span class="parameter-name">retainedLayer</span></span>)
      
    </section>
    <section class="desc markdown">
      <p>Add a retained engine layer subtree from previous frames.</p>
<p>All the engine layers that are in the subtree of the retained layer will
be automatically appended to the current engine layer tree.</p>
<p>Therefore, when implementing a subclass of the <code>Layer</code> concept defined in
the rendering layer of Flutter's framework, once this is called, there's
no need to call <code>addToScene</code> for its children layers.</p>
<p>Passing a layer to <a href="dart-ui/SceneBuilder/addRetained.html">addRetained</a> or as <code>oldLayer</code> argument to a push
method counts as <em>usage</em>. A layer can be used no more than once in a scene.
For example, it may not be passed simultaneously to two push methods, or
to a push method and to <code>addRetained</code>.</p>
<p>When a layer is passed to <a href="dart-ui/SceneBuilder/addRetained.html">addRetained</a> all descendant layers are also
considered as used in this scene. The same single-usage restriction
applies to descendants.</p>
<p>When a layer is passed as an <code>oldLayer</code> argument to a push method, it may
no longer be used in subsequent frames. If you would like to continue
reusing the resources associated with the layer, store the layer object
returned by the push method and use that in the next frame instead of the
original object.</p>
    </section>
    
    <section class="summary source-code" id="source">
      <h2><span>Implementation</span></h2>
      <pre class="language-dart"><code class="language-dart">void addRetained(EngineLayer retainedLayer) {
  assert(retainedLayer is _EngineLayerWrapper);
  assert(() {
    final _EngineLayerWrapper layer = retainedLayer;

    void recursivelyCheckChildrenUsedOnce(_EngineLayerWrapper parentLayer) {
      _debugCheckUsedOnce(parentLayer, &#39;retained layer&#39;);
      parentLayer._debugCheckNotUsedAsOldLayer();

      if (parentLayer._debugChildren == null || parentLayer._debugChildren.isEmpty) {
        return;
      }

      parentLayer._debugChildren.forEach(recursivelyCheckChildrenUsedOnce);
    }

    recursivelyCheckChildrenUsedOnce(layer);

    return true;
  }());

  final _EngineLayerWrapper wrapper = retainedLayer;
  _addRetained(wrapper._nativeLayer);
}</code></pre>
    </section>

  </div> <!-- /.main-content -->

  <div id="dartdoc-sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
  </div><!--/.sidebar-offcanvas-->

</main>

<footer>
  <span class="no-break">
    flutter_form_builder
      3.8.2
  </span>

  <!-- footer-text placeholder -->
</footer>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="static-assets/typeahead.bundle.min.js"></script>
<script src="static-assets/highlight.pack.js"></script>
<script src="static-assets/URI.js"></script>
<script src="static-assets/script.js"></script>
<!-- footer placeholder -->

</body>

</html>
